<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="zh" xml:lang="zh" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Task Descriptor: Obtain Testability Commitment</title>
<meta name="uma.type" content="TaskDescriptor">
<meta name="uma.name" content="obtain_testability_commitment">
<meta name="uma.presentationName" content="Obtain Testability Commitment">
<meta name="uma.guid" content="_mMldUEsZEdqlNo9QEt4izQ">
<meta name="element_type" content="TaskDescriptor">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../css/default.css" type="text/css">
<script src="./../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../scripts/ActivityTreeTable.js" type="text/javascript" language="JavaScript"></script><script src="./../../scripts/ProcessElementPage.js" type="text/javascript" language="JavaScript"></script><script src="./../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script src="./../../scripts/processElementData.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var defaultQueryStr = '?proc={35359DDF-6361-43E5-8B1B-18D204DA8CFF}&path={35359DDF-6361-43E5-8B1B-18D204DA8CFF},{7BD514AF-19F9-408F-8279-309BD153C157},_mMldUEsZEdqlNo9QEt4izQ';
					var backPath = './../../';
					var imgPath = './../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo, defaultQueryStr, true, true, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top">
<div id="page-guid" value="_mMldUEsZEdqlNo9QEt4izQ"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Task Descriptor: Obtain Testability Commitment</td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../images/taskdes_lg_dgm32.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">This task focuses on defining, prioritizing and promoting the testability needs and benefits.</td>
</tr>
<tr>
<td>Based on Method Task: <a href="./../../rup/tasks/obtain_testability_commitment_90A71C20.html" guid="{4052BFA5-036E-4BBE-B344-4BF5D81A4DD6}">Obtain Testability Commitment</a></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Relationships</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Roles</th><td class="sectionTableCell" width="30%"><span class="sectionTableCellHeading">Main:
								</span>
<ul>
<li>
<a href="./../../rup/capabilitypatterns/rup_test_manager_49D65242.html" guid="_mNQLsEsZEdqlNo9QEt4izQ">测试管理员</a>
</li>
</ul>
</td><td class="sectionTableCell" width="30%"><span class="sectionTableCellHeading">Additional:
								</span></td><td class="sectionTableCell"><span class="sectionTableCellHeading">Assisting:
								</span></td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row">Inputs</th><td class="sectionTableCell" width="30%"><span class="sectionTableCellHeading">Mandatory:
								</span>
<ul>
<li>
<a href="./../../rup/capabilitypatterns/rup_test_strategy_7FB79B6B.html" guid="_CTmsIhi2Edq_uI8xTPML6g">测试策略</a>
</li>
</ul>
</td><td class="sectionTableCell" width="30%"><span class="sectionTableCellHeading">Optional:
								</span>
<ul>
<li>
<a href="./../../rup/capabilitypatterns/rup_test_interface_specification_D4364DA2.html" guid="_CTmsLBi2Edq_uI8xTPML6g">测试接口规约</a>
</li>
<li>
<a href="./../../rup/capabilitypatterns/rup_test_automation_architecture_55B06974.html" guid="_CTmsJRi2Edq_uI8xTPML6g">测试自动化架构</a>
</li>
<li>
<a href="./../../rup/capabilitypatterns/rup_software_architecture_document_8A557B7B.html" guid="_CTmsIxi2Edq_uI8xTPML6g">软件架构文档</a>
</li>
<li>
<a href="./../../rup/capabilitypatterns/rup_project_plan_C41C7AAB.html" guid="_mNomMEsZEdqlNo9QEt4izQ">软件开发计划</a>
</li>
<li>
<a href="./../../rup/capabilitypatterns/rup_issues_list_CEBA5ABB.html" guid="_mNomMUsZEdqlNo9QEt4izQ">问题列表</a>
</li>
</ul>
</td><td class="sectionTableCell"><span class="sectionTableCellHeading">External:
								</span>
<ul>
<li>None</li>
</ul>
</td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row">Outputs</th><td class="sectionTableCell" colspan="3">
<ul>
<li>
<a href="./../../rup/capabilitypatterns/rup_test_plan_1A424B93.html" guid="_CTmsKRi2Edq_uI8xTPML6g">测试计划</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Steps</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="sectionTableCell">
<div class="stepHeading"> Examine testability needs </div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><a id="ExamineTestabilityNeeds" name="ExamineTestabilityNeeds"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>Purpose:</b>&nbsp;
            </td>
            <td width="95%">
                To gain a good understanding of the test implementation and assessment needs to be addressed by either the
                software delivery process, or the software architecture and design.&nbsp;
            </td>
        </tr>
    </table>
</div>
<p>
    Study the test automation architecture and test interface specifications to gain a good understanding of the test
    implementation and assessment needs. In particular, understand the constraints that these needs will place on either
    the software delivery process, or the software architecture and design.
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> Assess impact and prioritize </div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><a id="PrioritizeImpactAssessment" name="PrioritizeImpactAssessment"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>Purpose:</b>&nbsp;
            </td>
            <td width="95%">
                To identify the testability needs that are most important to the test effort and advocate their resolution
                before lesser needs.&nbsp;
            </td>
        </tr>
    </table>
</div>
<p>
    Study the testability needs and perform basic impact analysis in terms of the impact on the test effort of not having
    the need met. Also consider some basic analysis of the potential effort required by the development team to investigate
    and provide a solution for the need. For each need, identify potential alternative solutions that would have less
    impact the development teams.
</p>
<p>
    Using this information, formulate a prioritized list that places foremost the needs that have a large impact on the
    test effort if they are not met, yet have no alternative solution. Do this to both avoid wasting valuable development
    resources on less essential testability needs, saving this opportunity for the really important ones.
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> Define testability benefits </div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><a id="DefineTestabilityBenefits" name="DefineTestabilityBenefits"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>Purpose:</b>&nbsp;
            </td>
            <td width="95%">
                To be able to sell the value of the testability needs to the stakeholders in terms of basic
                cost-benefits.&nbsp;
            </td>
        </tr>
    </table>
</div>
<p>
    By asking the development team to develop software with specific provision for the test effort, you will be adding
    further requirements and constraints to the development effort; that essentially equates to more work and additional
    risk and complexity for the development team. Some development teams will view designing for testability as outside the
    scope of their responsibility. In other cases, the testability needs will have to compete for the development resources
    against customer needs and requirements that will usually be given more priority. As such, you need to "sell" the
    benefits of the testability needs to the project manager, software architect and other development team stakeholders.
</p>
<p>
    Formulate an analysis of the benefits of each testability need you want to obtain commitment for. Research papers,
    article and studies that support the value of your testability need, and make use of ROI statistics where available.
    Think of the benefits in terms of the value provided to the development team; what useful evaluation information will
    you be able to provide to them that could not be provided without this need being met? How will this make it easier or
    more efficient for you to give the development team timely, accurate, in-depth or useful feedback during each build
    cycle? Does this need provide the development team with a useful feature that can be used in their own test effort or
    in future diagnosis of software failure? In the case of competition against customer needs, consider ways you can show
    that providing a solution to the testability need earlier will provide additional opportunities for customer
    requirements to be supported in subsequent build cycles.
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> Identify and engage testability champions </div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><a id="EngageTestabilityChampions" name="EngageTestabilityChampions"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>Purpose:</b>&nbsp;
            </td>
            <td width="95%">
                To form alliances with important stakeholders who will champion the building of testable software and
                support the test teams needs in this regard.&nbsp;
            </td>
        </tr>
    </table>
</div>
<p>
    Given that you will be imposing potentially additional work or risk on the development team, you should identify and
    engage with those influential stakeholders who have the ability to approve or mandate the support of testability. Do
    this as soon as possible, before actively promoting the testability needs you want supported.
</p>
<p>
    The three most important stakeholders are the software architect, the project manager and the customer representative.
    Spend time with the software architect and promote the value of creating a software architecture that supports
    testability. Spend time with the project manager and promote the benefits of testability in terms of test team
    productivity and fast turn around on evaluation information. Encourage the customer to place value on a quality product
    being delivered.
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> Promote testability needs and benefits </div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><a id="PromoteTestability" name="PromoteTestability"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>Purpose:</b>&nbsp;
            </td>
            <td width="95%">
                To inform the relevant stakeholders of the important testability needs of the test effort, and gain their
                support for testability.&nbsp;
            </td>
        </tr>
    </table>
</div>
<p>
    It's important to promote testability needs in the right way. Each combination of project manager, development team and
    customer stakeholders has a different social dynamic and culture, and it's important to be sensitive to that when you
    promote testability needs. As general heuristics, don't mount a formal testability "campaign" if the team is relatively
    laid-back and informal; and don't use an informal approach in a high-ceremony project.
</p>
<p>
    In some cases, a collaborative "brainstorming" session is a useful presentation format, where the need is presented as
    a challenge to the development team, and they are encouraged to identify creative solutions to meet the testability
    need(s). This encourages their ownership of the solution and fosters a feeling of partnership in the effort.
</p>
<p>
    Timing is also important for this step. As a general rule, you should try to identify and promote the most important
    testability issues as early as possible, generally during the Elaboration, and where possible the Inception phase. When
    testability issues are raised in these early stages of the project, the team is typically smaller and is more receptive
    to change. It's also easier to include these needs in the evolving design as minimal rework is usually required.
</p>
<p>
    A good place to identify testability needs and present them in a positive and less "official" manner is to have the
    test team offer their services in evaluating proof-of-concept activities and in evaluating the selection of third-party
    components for use in the development effort. In particular, the involvement of test teams during database component
    selection, UI control or component selection, middleware components etc. means that testability issues can be used as
    one aspect of the component selection criteria. For example, in many cases development teams will have minimal concern
    over which UI widget library to make use of; if one library is more testable than another, the development team will be
    happy to select the more testable widget library.
</p>
<p>
    If you've had trouble identifying or engaging with testability champions, you may need to consider either an approach
    that introduces the changes more incrementally making them potentially less risky and smaller blocks of effort, or you
    may have to escalate the most important testability needs as critical project issues that prevent the test effort from
    being successful until they are resolved. In the latter case, we recommend you carefully consider all your options
    before deciding on this course of action.
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> Gain commitment to support and maintain testability </div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><a id="GainTestabilityCommitment" name="GainTestabilityCommitment"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>Purpose:</b>&nbsp;
            </td>
            <td width="95%">
                To gain an agreement that the development team will continue to support and maintain testability
                features.&nbsp;
            </td>
        </tr>
    </table>
</div>
<p>
    It's important to ensure the testability needs are regarded in the same way as any other requirement or constraint
    placed on the development effort. You need to be assured that the testability features made available today will not be
    abandoned tomorrow.
</p>
<p>
    In some cases, attempting to gain this commitment may result in the development team refusing to develop or support the
    testability needs. While this can be disheartening, it's better to be aware of this situation and deal with the reality
    of it at as early as possible; it's much worse to have spent extensive time and effort developing a test implementation
    that the development team then abandon uncommitted support for.
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> Advocate the resolution of testability issues </div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><a id="AdvocateTestabilityIssues" name="AdvocateTestabilityIssues"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>Purpose:</b>&nbsp;
            </td>
            <td width="95%">
                To monitor and champion the resolution of testability issues.&nbsp;
            </td>
        </tr>
    </table>
</div>
<p>
    While the development team may agree to provide the necessary support for the testability needs of the test effort,
    it's important that you take an active interest in the design, implementation and completion of this work. Don't simply
    abandon concern because the development team have agreed to address the testability needs or have begun work on a
    solution; you need to ensure that an appropriate solution is developed in a timely manner.
</p>
<p>
    Make yourself and the other test team staff readily available to answer the development teams questions, and offer to
    evaluate the prototypes as soon as they are built. Offer constructive feedback and show enthusiasm for the effort the
    development team have put into helping meet your needs. Offer to have your key staff attend or facilitate design
    workshops for the more complex testability needs, but guard against your team being overbearing and controlling the
    solution space of the design process for the developers.
</p>
<p>
    Where issues arise and you feel they are not getting adequate attention, or being addressed with the necessary haste,
    raise your concerns with the software architect and project manager. Have the project manager log an issue on the
    project issue list if appropriate.
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> Evaluate and verify your results </div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><a id="EvaluateResults" name="EvaluateResults"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>Purpose:</b>&nbsp;
            </td>
            <td width="95%">
                To verify that the task has been completed appropriately and that the resulting work products are
                acceptable.&nbsp;
            </td>
        </tr>
    </table><br />
</div>
<p>
    Now that you have completed the work, it is beneficial to verify that the work was of sufficient value, and that you
    did not simply consume vast quantities of paper. You should evaluate whether your work is of appropriate quality, and
    that it is complete enough to be useful to those team members who will make subsequent use of it as input to their
    work. Where possible, use the checklists provided in NUP to verify that quality and completeness are "good enough".
</p>
<p>
    Have the people performing the downstream tasks that rely on your work as input take part in reviewing your interim
    work. Do this while you still have time available to take action to address their concerns. You should also evaluate
    your work against the key input work products to make sure you have represented them accurately and sufficiently. It
    may be useful to have the author of the input work product review your work on this basis.
</p>
<p>
    Try to remember that that NUP is an iterative delivery process and that in many cases work products evolve over time.
    As such, it is not usually necessary-and is often counterproductive-to fully-form a work product that will only be
    partially used or will not be used at all in immediately subsequent work. This is because there is a high probability
    that the situation surrounding the work product will change-and the assumptions made when the work product was created
    proven incorrect-before the work product is used, resulting in wasted effort and costly rework. Also avoid the trap of
    spending too many cycles on presentation to the detriment of content value. In project environments where presentation
    has importance and economic value as a project deliverable, you might want to consider using an administrative resource
    to perform presentation tasks.
</p><br />
<br /></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Properties</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row" id="property_Multiple Occurrences" abbr="Multiple Occurrences">Multiple Occurrences</th><td class="sectionTableCell" align="left" headers="property_Multiple Occurrences"><img width="20" height="15" alt="" title="" src="./../../images/indent.gif"></td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row" id="property_Event Driven" abbr="Event Driven">Event Driven</th><td class="sectionTableCell" align="left" headers="property_Event Driven"><img width="20" height="15" alt="" title="" src="./../../images/indent.gif"></td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row" id="property_Ongoing" abbr="Ongoing">Ongoing</th><td class="sectionTableCell" align="left" headers="property_Ongoing"><img width="20" height="15" alt="" title="" src="./../../images/indent.gif"></td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row" id="property_Optional" abbr="Optional">Optional</th><td class="sectionTableCell" align="left" headers="property_Optional"><img width="20" height="15" alt="" title="" src="./../../images/indent.gif"></td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row" id="property_Planned" abbr="Planned">Planned</th><td class="sectionTableCell" align="left" headers="property_Planned"><img width="20" height="15" alt="" title="" src="./../../images/indent.gif"></td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row" id="property_Repeatable" abbr="Repeatable">Repeatable</th><td class="sectionTableCell" align="left" headers="property_Repeatable"><img width="20" height="15" alt="" title="" src="./../../images/indent.gif"></td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright">Copyright &copy; 2008 版权所有 东软集团股份有限公司&nbsp; 联系邮箱:<a href="mailto:tcoe@neusoft.com">tcoe@neusoft.com</a></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script language="JavaScript" type="text/javascript">
					contentPage.onload();
					contentPage.processPage.fixDescriptorLinks();
				</script>
</html>
